/**
  SUNNY project, Anyang Normal University, IMP-CAS
  \class TACGCoe
  \brief calculate Clebsch-Gordan coefficient <j1m1j2m2|jm>
  \author SUN Yazhou, asia.rabbit@163.com
  \since 2021/02/28
  \date Last modified: 2021/02/28 by SUN Yazhou
  \copyright 2020-2023 SUN Yazhou
  \copyright CNOK project, Anyang Normal University, IMP-CAS
*/

#ifndef _TACGCoe_h_
#define _TACGCoe_h_

class TACGCoe{
public:
  TACGCoe(){}
  ~TACGCoe(){}

  static double CG(double j1, double m1, double j2, double m2, double j, double m);
  static double ThreeJSymbol(double j1, double m1, double j2, double m2,
    double j, double m);

protected:
  static double CGHalfP(double j1, double m1, double j, double m); ///< j2=1/2, m2>0
  static double CGHalfM(double j1, double m1, double j, double m); ///< j2=1/2, m2<0
  static double CG1P(double j1, double m1, double j, double m); ///< j2=1, m2=1
  static double CG1Z(double j1, double m1, double j, double m); ///< j2=1, m2=0
  static double CG1M(double j1, double m1, double j, double m); ///< j2=1, m2=-1
};

#endif
